<?php
/**
 * 请求资源接口类
 * Created by PhpStorm.
 * User: zhongbaitong
 * Date: 2020/5/20
 * Time: 17:04
 */

namespace app\controller;

class Resource extends Base
{

    /**
     * 获取资源分类列表
     * @url [get]:/resource/getCategories
     * @return boolean
     */
    public function getCategories()
    {
        $rs = db("category")->_where(["status" => 1])->_select();

        return $this->apiReturn($rs);
    }

    /**
     * 获取音频列表
     * @url [get]:/resource/getAudioLists
     * @input category_id  int  分类id
     * @input key  string  搜索关键词
     * @input page int 页码
     * @input limit int 每页展示数
     * @return false|string
     */
    public function getAudioLists()
    {
        $input = $this->getInput();
        // 默认排序
        $order = "id desc";
        // 默认字段
        $field = "id,title,audio_size,create_time,logo";
        // 默认条件（无）
        $where = [];
        // 分类
        if (isset($input["category_id"]) && $input["category_id"]) {
            $where[] = ["category_id", "=", (int)$input["category_id"]];
        }
        // 搜索
        if (isset($input["key"]) && $input["key"]) {
            $where[] = ["title", "like", "%" . addslashes($input["key"]) . "%"];
        }
        // 我的收藏
        if (isset($input["is_get_collect"]) && $input["is_get_collect"]) {
            $resource_ids = db("user_collection")->_where(["user_id" => $this->user["id"] ?? 0])
                ->_column("resource_id");
            // 未登陆或未收藏 直接返回空[]
            if (!$this->isLogin() || !$resource_ids) {
                return $this->apiReturn([]);
            }
            // 根据收藏时间排序
            $order = "FIND_IN_SET(id,'" . implode(',', $resource_ids) . "') DESC";
            $where[] = ["id", "in", $resource_ids];
        }

        // VIP 展示
        if ($this->isLogin() && $this->user["is_vip"]) {
            $field .= ",audio_oss_url";
        } else {
            $field .= ",CONCAT('" . get_domain() . "',audio_cut_url) as audio_oss_url";
        }

        // 获取资源数据
        $rs = db("resources")->_field($field)
            ->_where($where)->_order($order)
            ->_page($input["page"] ?? 1, $input["limit"] ?? 15)
            ->_select();

        // 登陆用户添加释放已收藏标识
        if ($this->isLogin()) {
            $resource_ids = db("user_collection")->_where(["user_id" => $this->user["id"]])
                ->_column("resource_id");
            foreach ($rs as $k => $v) {
                $rs[$k]["is_collected"] = in_array($v["id"], $resource_ids) ? 1 : 0;
            }
        }

        return $this->apiReturn($rs);
    }

    /**
     * 获取读书笔记列表
     * @url [get]:/resource/getNotes
     * @input page int 页码
     * @input limit int 每页展示数
     * @return false|string
     */
    public function getNotes()
    {
        $input = $this->getInput();
        $rs = db("note")->_where(["status", "=", 1])
            ->_order("create_time desc")
            ->_page($input["page"] ?? 1, $input["limit"] ?? 5)
            ->_select();

        return $this->apiReturn($rs);
    }

}